package es.goldbittle.android;


import java.io.IOException;

import org.xmlpull.v1.XmlPullParserException;

import quinielaGold.beans.Persona;
import quinielaGold.beans.Usuario;
import quinielaGold.excepciones.ExcepcionConexion;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class QGRanking extends Activity {
    /** Called when the activity is first created. */
	private static int parametro = 0;
	private static final int RANKING_PUNTOS			= 1;
	private static final int RANKING_EFECTIVIDAD	= 2;
	private static int cont_ranking_puntos			= 0;
	private static int cont_ranking_efectividad		= 0;
	ProgressBar progressBar;
	private ProgressDialog pDialog;
	private MiTareaAsincronaDialog perfilTarea;

	@Override
    public void onCreate(Bundle savedInstanceState) {
		try{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ranking);


        progressBar = (ProgressBar) findViewById(R.id.progressBar3);
        
        //Gestionamos el evento del Ranking Puntos
        final ImageView btnImagenRankingPuntos = (ImageView)findViewById(R.id.imgRanking1);
        btnImagenRankingPuntos.setOnClickListener(new View.OnClickListener() {
	        public void onClick(View v) {
	        	try{
	        		parametro=RANKING_PUNTOS;
	        		tareaAsincrona(cont_ranking_puntos);
	        		cont_ranking_puntos++;
	        	}catch(Exception e){
	        		System.out.println(e);
	        	}
	        	
	        	/*
	        	try{
	        		
		            //Creamos el Intent
		        	Intent intent = new Intent(QGRanking.this, QGRankingPuntos.class);
		        	//Iniciamos la nueva actividad
		            startActivity(intent);
		            QGRanking.this.finish();
		            
	        	}catch(Exception e){
	        		System.out.println(e);
	        	}
	        	*/
	        }
        });   
        
        //Gestionamos el evento del Ranking Efectividad
        final ImageView btnImagenRankingEfectividad = (ImageView)findViewById(R.id.imgRanking2);
        btnImagenRankingEfectividad.setOnClickListener(new View.OnClickListener() {
	        public void onClick(View v) {
	        	try{
	        		parametro=RANKING_EFECTIVIDAD;
	        		tareaAsincrona(cont_ranking_efectividad);
	        		cont_ranking_efectividad++;
	        	}catch(Exception e){
	        		System.out.println(e);
	        	}
	        	/*
	        	try{
		            //Creamos el Intent
		        	Intent intent = new Intent(QGRanking.this, QGRankingEfectividad.class);
		        	//Iniciamos la nueva actividad
		            startActivity(intent);
		            QGRanking.this.finish();
	        	}catch(Exception e){
	        		System.out.println(e);
	        	}
	        	*/
	        }
        });   
        
        //Gestionamos el evento del volver
        final ImageView btnImagenVolver = (ImageView)findViewById(R.id.volverderanking);
        btnImagenVolver.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
	            //Creamos el Intent
	        	Intent intent = new Intent(QGRanking.this, QGPrincipal.class);
        	
	        	//Iniciamos la nueva actividad
	            startActivity(intent);
	            QGRanking.this.finish();
			}
		});
		}catch(Exception e){
			mostrarMensaje("Hubo un problema en el Ranking.");
            //Creamos el Intent
        	Intent intent = new Intent(QGRanking.this, QGPrincipal.class);
    	
        	//Iniciamos la nueva actividad
            startActivity(intent);
            QGRanking.this.finish();
		}
    }

    private void tareaLarga(int parametro) throws IOException, XmlPullParserException, ExcepcionConexion
    {
    	Intent intent;
    	switch(parametro)
    	{
	    	case RANKING_PUNTOS:	
	    		intent = new Intent(QGRanking.this, QGRankingPuntos.class);
	    		startActivity(intent);
	    		break;
	    	case RANKING_EFECTIVIDAD:	
	    		intent = new Intent(QGRanking.this, QGRankingEfectividad.class);
				startActivity(intent);
	    		break;
    	}
        
        QGRanking.this.finish();
	}
    
    private void tareaAsincrona(int contador)
    {
    	if (contador<1)
    	{
	    	pDialog = new ProgressDialog(QGRanking.this);
			pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
			//pDialog.setProgressStyle(android.R.attr.progressBarStyleSmall);
			pDialog.setMessage("Cargando datos...");
			pDialog.setCancelable(false);
			pDialog.setMax(100);
			perfilTarea = new MiTareaAsincronaDialog();
			perfilTarea.execute();
    	}
    	else
    	{
    		progressBar.setVisibility(View.VISIBLE);
    		
    		try
    		{
				tareaLarga(parametro);
			}
    		catch (ExcepcionConexion e)
			{
				e.printStackTrace();
			}
    		catch (IOException e)
    		{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    		catch (XmlPullParserException e)
    		{
				// TODO Auto-generated catch block
				e.printStackTrace();	
			}
    	}
    } 
    
    private class MiTareaAsincronaDialog extends AsyncTask<Void, Integer, Boolean> 
    {

		@Override
		protected Boolean doInBackground(Void... params) {
		
			try {
				tareaLarga(parametro);
				return true;
			} catch (ExcepcionConexion e) {
				e.printStackTrace();
				return false;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return false;
			} catch (XmlPullParserException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return false;
			}
		
				
			
		}
		
		@Override
		protected void onProgressUpdate(Integer... values) {
			int progreso = values[0].intValue();
		
			pDialog.setProgress(progreso);
		}
		
		@Override
		protected void onPreExecute() {
		
			pDialog.setOnCancelListener(new OnCancelListener() {
				// @Override
				public void onCancel(DialogInterface dialog) {
					MiTareaAsincronaDialog.this.cancel(true);
				}
			});
		
			pDialog.setProgress(0);
			pDialog.show();
		}
		
		@Override
		protected void onPostExecute(Boolean result) {
			if (!result) {
				pDialog.dismiss();
				Toast.makeText(QGRanking.this, "Error", Toast.LENGTH_LONG).show();
					
			}
		}
		
		@Override
		protected void onCancelled() {
			Toast.makeText(QGRanking.this, "Tarea cancelada!", Toast.LENGTH_LONG)
					.show();
		}
    }
    private void mostrarMensaje(String mensaje)
    {
    	Toast toast1 = Toast.makeText(getApplicationContext(),
                        mensaje, Toast.LENGTH_SHORT);
     		toast1.setGravity(Gravity.CENTER,0,0);
            toast1.show();
    }

}
